package org.gdg.frisbee.android.appwidget; import android.content.Intent; import android.net.Uri; import com.google.android.apps.dashclock.api.DashClockExtension; import com.google.android.apps.dashclock.api.ExtensionData; import org.gdg.frisbee.android.R; import org.gdg.frisbee.android.api.Callback; import org.gdg.frisbee.android.api.model.Event; import org.gdg.frisbee.android.api.model.PagedList; import org.gdg.frisbee.android.app.App; import org.gdg.frisbee.android.utils.PrefUtils; import org.joda.time.DateTime; import org.joda.time.format.DateTimeFormat; import java.util.List; import java.util.Locale; import timber.log.Timber; public class GdgDashClockExtension extends DashClockExtension { @Override protected void onUpdateData(int i) { final String homeGdg = PrefUtils.getHomeChapterId(GdgDashClockExtension.this); if (homeGdg == null) { Timber.d("Got no Home GDG"); return; } Timber.d("Fetching events"); App.from(this).getGdgXHub().getChapterEventList(homeGdg, new DateTime(), new DateTime().plusMonths(1)) .enqueue(new Callback<PagedList<Event>>() { @Override public void onSuccess(PagedList<Event> eventsPagedList) { List<Event> events = eventsPagedList.getItems(); if (events.size() > 0) { if (events.get(0).getGPlusEventLink() != null) { Event event = events.get(0); String expandedBody = event.getStart() .toLocalDateTime() .toString(DateTimeFormat.patternForStyle("MS", Locale.getDefault())); publishUpdate(new ExtensionData() .visible(true) .icon(R.drawable.ic_dashclock) .status("GDG") .expandedTitle(event.getTitle()) .expandedBody(expandedBody) .clickIntent(new Intent(Intent.ACTION_VIEW, Uri.parse(event.getGPlusEventLink())))); } } else { publishUpdate(new ExtensionData() .visible(false)); } } }); } }